package com.cr.business.mapper;

import java.util.List;
import com.cr.business.domain.TbProducerInfo;
import com.cr.business.domain.dto.ProducerReqDto;
import com.cr.business.domain.vo.AppProducerInfoData;
import com.cr.business.domain.vo.AppProducerOptionData;
import com.cr.business.domain.vo.ProducerDataVo;
import com.cr.business.domain.vo.AppProducerListData;

/**
 * 生产人信息Mapper接口
 * 
 * @author tang
 * @date 2025-08-19
 */
public interface TbProducerInfoMapper 
{

    /**
     * 查询生产人信息列表
     *
     * @param dto 参数
     * @return 生产人信息集合
     */
    List<ProducerDataVo> selectTbProducerInfoList(ProducerReqDto dto);

    /**
     * 查询生产人信息
     * 
     * @param producerId 生产人信息主键
     * @return 生产人信息
     */
    TbProducerInfo selectTbProducerInfoByProducerId(String producerId);
    AppProducerInfoData selectAppProducerInfoByProducerId(String producerId);

    /**
     * 取消其他默认生产人
     */
    int cancelOtherDefault(String userId);

    /**
     * 新增生产人信息
     * 
     * @param tbProducerInfo 生产人信息
     * @return 结果
     */
    int insertTbProducerInfo(TbProducerInfo tbProducerInfo);

    /**
     * 修改生产人信息
     * 
     * @param tbProducerInfo 生产人信息
     * @return 结果
     */
    int updateTbProducerInfo(TbProducerInfo tbProducerInfo);

    /**
     * 删除生产人信息
     * 
     * @param producerId 生产人信息主键
     * @return 结果
     */
    int deleteTbProducerInfoByProducerId(String producerId);

    /**
     * 批量删除生产人信息
     * 
     * @param producerIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteTbProducerInfoByProducerIds(String[] producerIds);

    /**
     * app端生产人信息列表
     */
    List<AppProducerListData> selectAppProducerListData(String userId);

    /**
     * app端生产人下拉数据
     */
    List<AppProducerOptionData> selectAppOptionListData(String userId);

    TbProducerInfo selectByPhone(String phone);

}
